/************************************************************************************//**
*\n  @file       hardwares.h
*\n  @brief      硬件设备接口文件
*\n  @details
*\n -------------------------------------------------------------------------
*\n  文件说明：
*\n       1. 硬件设备接口文件
*\n       2. 定义硬件设备接口
*\n       3. C++设计，并提供C接口
*\n
*\n -------------------------------------------------------------------------
*\n  版本:   修改人:   修改日期:       描述:
*\n  V0.01   罗先能    2021.4.3      创建
*\n
****************************************************************************************/
#pragma once
#ifndef H_118F0F7C_A532_4837_8515_895C0E0650D1
#define H_118F0F7C_A532_4837_8515_895C0E0650D1

/***************************************************************************************
 * 头文件
****************************************************************************************/
#include "vme.h"
//#include "bus_spi.hpp"
#include "device_uart.hpp"


/***************************************************************************************
* 宏定、常量、结构定义
****************************************************************************************/
// 设备index
typedef enum
{
	DEV_NO_GPIO38 = 0,
	DEV_NO_GPIO39,

	DEV_NO_RS485A,
	DEV_NO_RS485B,
	DEV_NO_RS232,

	DEV_NO_MAX,

} DEV_NO;

/***************************************************************************************
* 全局函数声明、定义
****************************************************************************************/
#ifdef __cplusplus
extern "C"
{
#endif

/// devices 操作函数
// int HwInit(DEV_NO id);
int HwOpen  (DEV_NO id, void* pHandle);
int HwClose (DEV_NO id, void* pHandle);
int HwLock  (DEV_NO id);
int HwUnlock(DEV_NO id);
int HwRead  (DEV_NO id, long address, void *buf, long size);
int HwWrite (DEV_NO id, long address, void *buf, long size);
int HwIoctl (DEV_NO id, long cmd,     void *buf, long *psize);

int DevicesInit();

#ifdef __cplusplus
}
#endif
#endif  // H_118F0F7C_A532_4837_8515_895C0E0650D1